The present technique relates to an apparatus and method for avoiding conflicting entries in a storage structure.
In modern data processing systems, a variety of different storage structures are used. For some storage structures, it is important to ensure that when data is allocated into an entry of the storage structure, that data does not conflict with data stored in another entry of the storage structure. In particular, the presence of such conflicting entries could cause incorrect operation of the data processing system, and/or data corruption. An example of a storage structure that requires conflict detection mechanisms to be provided to ensure that conflicting entries do not arise is a translation lookaside buffer (TLB) that provides address translation data used to convert a virtual address into a corresponding physical address within a page of physical memory. In particular, when a new virtual address is specified, and a lookup operation is accordingly performed within such a TLB, there should at most be only one entry that provides the required address translation data.
In some storage structures where associated conflict detection circuitry is required, it may not be possible to determine whether a conflict situation exists or not in relation to new data being allocated into an entry of the storage structure until that data is fully available for allocation. For instance, considering the earlier example of a TLB, the page size information associated with new address translation data to be allocated into an entry of the TLB may be needed before it can be determined whether any of the other entries contain address translation data that would conflict with the new address translation data.
However, performing conflict detection at such a late stage can cause significant performance problems. It would hence be desirable to provide an improved mechanism for avoiding conflicting entries in a storage structure.